package com.tonghe.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tonghe.domain.ResponseResult;
import com.tonghe.domain.dto.AddUserDTO;
import com.tonghe.domain.entity.User;


/**
 * 用户表(User)表服务接口
 *
 * @author tonghe
 * @since 2022-03-12 13:39:52
 */
public interface UserService extends IService<User> {

    /** 获取用户信息 */
    ResponseResult userInfo();

    /**
     * 更新用户信息
     *
     * @param user 用户实体
     * @return 结果
     */
    ResponseResult updateUserInfo(User user);

    /**
     * 注册 / 新增用户
     *
     * @param user 用户实体
     * @return 结果
     */
    ResponseResult register(User user);

    /**
     * 注册 / 新增用户
     * @param addUserDTO 参数信息
     * @return 结果
     */
    ResponseResult register(AddUserDTO addUserDTO);

    /**
     * 获取验证码
     *
     * @param mailAddress 邮箱地址
     * @return 结果
     */
    ResponseResult getMsgCode(String mailAddress);

    /**
     * 更新用户信息
     *
     * @param user 用户实体
     * @return 结果
     */
    void updateUser(User user);

    /**
     * 后台添加用户
     *
     * @param user 用户实体
     * @return 结果
     */
    ResponseResult addUser(User user);

    /**
     * 检查邮箱是否唯一
     *
     * @param user 用户实体
     * @return 结果
     */
    boolean checkEmailUnique(User user);

    /**
     * 检查手机号是否唯一
     *
     * @param user 用户实体
     * @return 结果
     */
    boolean checkPhoneUnique(User user);

    /**
     * 检查用户名是否唯一
     *
     * @param userName 用户名称
     * @return 结果
     */
    boolean checkUserNameUnique(String userName);

    /**
     * 分页查询用户
     *
     * @param user user模糊查询条件
     * @param pageNum 页号
     * @param pageSize 每页多大
     * @return 结果
     */
    ResponseResult selectUserPage(User user, Integer pageNum, Integer pageSize);
}
